package com.hs.common;

import java.util.*;

 

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import net.sf.json.JsonConfig;
public class JSONHandle {

	
	/**
	 * 
	 * 功能: 定义列表为头标识为beanList
	 *  由json生成bean
	 * 作者: WXY
	 * 创建日期:2006-12-11
	 * @param jsonStr
	 * @param o
	 * @return
	 */
	public List getListBean(String jsonStr,Class o)
	{
		List list = new ArrayList();
		JSONObject jsonObject= JSONObject.fromObject(jsonStr);
		JsonConfig jsonConfig= new JsonConfig();
		jsonConfig.setRootClass(o);
		JSONArray jSONArray= (JSONArray)jsonObject.get("beanList");
		Iterator iterator = jSONArray.iterator();
		while(iterator.hasNext())
		{
			JSONObject jsonObjectTem = (JSONObject)iterator.next();
			list.add(JSONSerializer.toJava(jsonObjectTem,jsonConfig));
		}
		return list;
	}
	
	/***
	 * 
	 * 功能: 对象生成json
	 * 作者: WXY
	 * 创建日期:2006-12-13
	 * @param o
	 * @return
	 */
	public String getJsonBeanStr(Object o )
	{
		JSONObject jsonObject= JSONObject.fromObject(o);
		return jsonObject.toString();
	}
	
	
	/**
	 * 
	 * 功能: 由json生成bean 
	 *      指某一个对象
	 * 作者: WXY
	 * 创建日期:2006-12-11
	 * @param jsonStr
	 * @param o
	 * @return
	 */
	public Object getJsonBean(String jsonStr,Class o)
	{
		JSONObject jsonObject = JSONObject.fromObject(jsonStr);
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.setRootClass(o);
		return JSONSerializer.toJava(jsonObject,jsonConfig);
	}
	/**
	 * 
	 * 功能: 由json生成bean 格式定制
	 *      指某一个对象
	 *      {classBean:'cn.com.hhwy.sys.data.SysfDictInfo',obj:{}}
	 * 作者: WXY
	 * 创建日期:2006-12-11
	 * @param jsonStr
	 * @return
	 * @throws ClassNotFoundException 
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 */
	public Object getJsonBeanAll(String jsonStr) throws ClassNotFoundException, InstantiationException, IllegalAccessException
	{
		JSONObject jsonObject = JSONObject.fromObject(jsonStr);
		String className = (String) jsonObject.get("classBean");
		Class o = Class.forName(className);
		JSONObject jsonStrBean = (JSONObject)jsonObject.get("obj");
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.setRootClass(o);
		return JSONSerializer.toJava(jsonStrBean,jsonConfig);
	}
	
	/**
	 * 
	 * 功能: 由json生成bean 格式定制 
	 * 指某一个对象
	 * {classBean:'cn.com.hhwy.sys.data.SysfDictInfo',obj:[{},{}]}
	 *     
	 * 作者: WXY
	 * 创建日期:2006-12-11
	 * @param jsonStr
	 * @return
	 * @throws ClassNotFoundException 
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 */
	public List getJsonBeanAllList(String jsonStr) throws ClassNotFoundException, InstantiationException, IllegalAccessException
	{
		List list = new ArrayList();
		JSONObject jsonObject = JSONObject.fromObject(jsonStr);
		String className = (String) jsonObject.get("classBean");
		Class o = Class.forName(className);
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.setRootClass(o);
		JSONArray jSONArray = jsonObject.getJSONArray("obj");
//		JSONObject jsonStrBean = (JSONObject)jsonObject.get("obj");
		Iterator iterator = jSONArray.iterator();
		while(iterator.hasNext())
		{
			JSONObject jsonObjectTem = (JSONObject)iterator.next();
			list.add(JSONSerializer.toJava(jsonObjectTem,jsonConfig));
		}
		return list;
	}
	/**
	 * 
	 * 
	 * 功能: 由集合对象生成json串
	 * 作者: WXY
	 * 创建日期:2006-12-11
	 * @param list
	 * @param identifier
	 * @return
	 */
	public String getJsonToStr(List list,String identifier)
	{
		JSONArray jsonArray = JSONArray.fromObject(list);
		JSONObject jsonObject = new JSONObject();
		jsonObject.accumulate(identifier,jsonArray);
		return jsonObject.toString();
	}
	
	public String getJsonToStr(List list)
	{
		JSONArray jsonArray = JSONArray.fromObject(list);
		return jsonArray.toString();
	}
	
	/***
	 * 
	 * 功能: 成功-返回串
	 * 作者: WXY
	 * 创建日期:2006-12-14
	 * @param desc
	 * @return
	 */
	public String jsonSuccess(String desc){
		return "{success:true, data:[{desc:'" + desc +"'}]}";
	}
	
	public String jsonSuccessObj(Object data){
		return "{success:true, data:["+getJsonBeanStr(data)+"]}";
	}
	
	
	/***
	 * 
	 * 功能: 成功-返回串 可加属性 
	 * 作者: WXY
	 * 创建日期:2006-12-14
	 * @param desc
	 * @return
	 */
	public String jsonSuccess(String desc,String attribute){
		return "{success:true, data:[{desc:'" + desc +"',"+attribute+"}]}";
	}
	/***
	 * 
	 * 功能: 返回结果 是否成功
	 * 作者: WXY
	 * 创建日期:2007-12-22
	 * @param bo
	 * @param desc
	 * @param attribute
	 * @return
	 */
	public String jsonResult(boolean bo,String desc,String attribute){
		return "{result:"+bo+",desc:'" + desc +"'"+attribute+"}";
	}
	/***
	 * 
	 * 功能: 失败-返回串
	 * 作者: WXY
	 * 创建日期:2006-12-14
	 * @param desc
	 * @return
	 */
	public String jsonFailure(String desc){
		return "{failure:true, data:[{desc:'" + desc +"'}]}";
	}
	
	public String jsonList(String json,long size){
		return "{\"totalCount\":\""+size+""+"\",\"topics\":"+json+"}";
	}
	
	/*******
	 * 反射bean
	 * @param obj
	 * @param map
	 * @return
	 */
	public Object reflectBean(Class obj , Map map)
	{
		JSONObject jsonStrBean = new JSONObject();
		JsonConfig jsonConfig = new JsonConfig();
		jsonStrBean.accumulateAll(map);
		jsonConfig.setRootClass(obj);
		return JSONSerializer.toJava(jsonStrBean,jsonConfig);
	}
}
